home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Bowers Development / Demo AppMaker / Examples / PowerPlant / Everything / CModelessBars.cp < prev    next >
Encoding:
Text File  |  1998-10-11  |  11.7 KB  |  557 lines  |  [TEXT/CWIE]

  1. // CModelessBars.cp -- dialog methods
  2.  
  3. #include "CModelessBars.h"
  4.  
  5. #include <UEnvironment.h>
  6. #include <UReanimator.h>
  7. #include <URegistrar.h>
  8. #include <LStream.h>
  9. #include <LTabGroup.h>
  10. #include <LView.h>
  11. #include <CTabPanelGroup.h>
  12. #include <LAMTabsControlImp.h>
  13. #include <LGATabsControlImp.h>
  14. #include <LScrollBar.h>
  15. #include <LAMTrackActionImp.h>
  16. #include <LStdScrollBarImp.h>
  17. #include <CustomControls.h>
  18. #include <LSlider.h>
  19. #include <LGASliderImp.h>
  20. #include <LLittleArrows.h>
  21. #include <LGALittleArrowsImp.h>
  22. #include <LProgressBar.h>
  23. #include <LGAProgressBarImp.h>
  24. #include <LChasingArrows.h>
  25. #include <LAMControlImp.h>
  26. #include <LGAChasingArrowsImp.h>
  27. #include <CTextUtils.h>
  28.  
  29. #include "DModelessBarsData.h"
  30. #include "EverythingCmds.h"
  31. #include <PP_Messages.h>
  32.  
  33. const MessageT    msgBars    = 'Bars';
  34. const MessageT    msgStandard    = 'Stad';
  35. const MessageT    msgGraphic    = 'Grac';
  36. const MessageT    msgSlider    = 'Slir';
  37. const MessageT    msgTickMarks    = 'Tics';
  38. const MessageT    msgNonDirectional    = 'Nonl';
  39. const MessageT    msgLittleArrows    = 'Lits';
  40. const MessageT    msgSpinner    = 'Spir';
  41. const MessageT    msgVolumeControl    = 'Voll';
  42. const MessageT    msgJimSSlider    = 'Jimr';
  43.  
  44. #define PPob_ModelessBarsID    219
  45. #define RidL_ModelessBarsID    219
  46.  
  47. Boolean        CModelessBars::sIsRegistered = false;
  48.  
  49. //----------
  50. CModelessBars*        CModelessBars::CreateModelessBars (
  51.     LCommander*        inSuperCommander,
  52.     CommandT        inCommand,
  53.     DModelessBarsData*        inData)
  54. {
  55.     if (!sIsRegistered) {
  56.         RegisterClass ();
  57.     }
  58.     CModelessBars*        dlog;
  59.     dlog = ((CModelessBars *)LWindow::CreateWindow(PPob_ModelessBarsID, inSuperCommander));
  60.     dlog->mCommand = inCommand;
  61.     dlog->SetFromData (inData);
  62.  
  63.     return dlog;
  64. }
  65.  
  66. //----------
  67. #define    RegisterClasses(AbstractClass,AMImpClass,GAImpClass)    \
  68.     RegisterClass_(AbstractClass);    \
  69.     if (useAppearance) {    \
  70.         RegisterClassID_(AMImpClass, AbstractClass::imp_class_ID);    \
  71.     } else {    \
  72.         RegisterClassID_(GAImpClass, AbstractClass::imp_class_ID);    \
  73.     }
  74.  
  75. //----------
  76. void    CModelessBars::RegisterClass ()
  77. {
  78.     Boolean        useAppearance = UEnvironment::HasFeature (env_HasAppearance);
  79.  
  80.     RegisterClass_(CModelessBars);
  81.  
  82.     // register the pane classes we use
  83.     RegisterClass_(LView);
  84.     RegisterClasses (CTabPanelGroup, LAMTabsControlImp, LGATabsControlImp);
  85.     RegisterClasses (LScrollBar, LAMTrackActionImp, LStdScrollBarImp);
  86.     RegisterClasses (CScrollBar, CustomControlImp, CustomControlImp);
  87.     RegisterClasses (LSlider, LAMTrackActionImp, LGASliderImp);
  88.     RegisterClasses (LLittleArrows, LAMTrackActionImp, LGALittleArrowsImp);
  89.     RegisterClasses (LProgressBar, LAMTrackActionImp, LGAProgressBarImp);
  90.     RegisterClasses (LChasingArrows, LAMControlImp, LGAChasingArrowsImp);
  91.     RegisterClasses (CControlPane, CustomControlImp, CustomControlImp);
  92.  
  93.     sIsRegistered = true;
  94. }
  95.  
  96. //----------
  97. CModelessBars::CModelessBars (
  98.     LStream*    inStream)
  99.     : LGADialog (inStream)
  100. {
  101.     mData = nil;
  102. }
  103.  
  104. //----------
  105. CModelessBars::~CModelessBars()
  106. {
  107.     delete mData;
  108. }
  109.  
  110. //----------
  111. //    This member function gets called once the containment hierarchy that contains
  112. //    this pane has been built. It gives us a chance to get data members for
  113. //    interesting subviews, and to do other operations now that our subviews exist.
  114. void    CModelessBars::FinishCreateSelf()
  115. {
  116.     LGADialog::FinishCreateSelf();
  117.  
  118.     mBarsPanel = (CTabPanelGroup*) FindPaneByID ('Bars');
  119.  
  120.     mStandardScroll = (LScrollBar*) FindPaneByID ('Stad');
  121.  
  122.     mGraphicScroll = (CScrollBar*) FindPaneByID ('Grac');
  123.  
  124.     mSliderScroll = (LSlider*) FindPaneByID ('Slir');
  125.  
  126.     mTickMarksScroll = (LSlider*) FindPaneByID ('Tics');
  127.  
  128.     mNonDirectionalScroll = (LSlider*) FindPaneByID ('Nonl');
  129.  
  130.     mLittleArrowsScroll = (LLittleArrows*) FindPaneByID ('Lits');
  131.  
  132.     mSpinnerScroll = (CScrollBar*) FindPaneByID ('Spir');
  133.  
  134.     mVolumeControlScroll = (CScrollBar*) FindPaneByID ('Voll');
  135.  
  136.     mJimSSliderScroll = (CScrollBar*) FindPaneByID ('Jimr');
  137.  
  138.     mStandard2Bar = (LProgressBar*) FindPaneByID ('Sta2');
  139.  
  140.     mIndeterminateBar = (LProgressBar*) FindPaneByID ('Inde');
  141.  
  142.     mChasingArrowsBar = (LChasingArrows*) FindPaneByID ('Chas');
  143.  
  144.     mRectangleBar = (CControlPane*) FindPaneByID ('Rece');
  145.  
  146.     mRoundRectBar = (CControlPane*) FindPaneByID ('Rout');
  147.  
  148.     mBarberPoleBar = (CControlPane*) FindPaneByID ('Bare');
  149.  
  150.     mRoundBarberBar = (CControlPane*) FindPaneByID ('Rour');
  151.  
  152.  
  153.     UReanimator::LinkListenerToControls(this, this, RidL_ModelessBarsID);
  154.         // the purpose is to "connect" self to whatever controls
  155.         // that we want to "listen" to
  156.  
  157. // any additional initialization for your dialog:
  158.  
  159. }
  160.  
  161. //----------
  162. void    CModelessBars::SetFromData (
  163.     DModelessBarsData*        inData)
  164. {
  165.     mData = inData;
  166.     mData->AddListener (this);
  167.  
  168.     mBarsPanel->SetValue (mData->GetBars3 ());
  169.     mStandardScroll->SetValue (mData->GetStandard8 ());
  170.     mGraphicScroll->SetValue (mData->GetGraphic6 ());
  171.     mSliderScroll->SetValue (mData->GetSlider3 ());
  172.     mTickMarksScroll->SetValue (mData->GetTickMarks3 ());
  173.     mNonDirectionalScroll->SetValue (mData->GetNonDirectional3 ());
  174.     mLittleArrowsScroll->SetValue (mData->GetLittleArrows3 ());
  175.     mSpinnerScroll->SetValue (mData->GetSpinner3 ());
  176.     mVolumeControlScroll->SetValue (mData->GetVolumeControl3 ());
  177.     mJimSSliderScroll->SetValue (mData->GetJimSSlider3 ());
  178.     mStandard2Bar->SetValue (mData->GetStandard9 ());
  179.     mIndeterminateBar->SetValue (mData->GetIndeterminate3 ());
  180.     mChasingArrowsBar->SetValue (mData->GetChasingArrows3 ());
  181.     mRectangleBar->SetValue (mData->GetRectangle3 ());
  182.     mRoundRectBar->SetValue (mData->GetRoundRect3 ());
  183.     mBarberPoleBar->SetValue (mData->GetBarberPole3 ());
  184.     mRoundBarberBar->SetValue (mData->GetRoundBarber3 ());
  185. }
  186.  
  187. //----------
  188. DModelessBarsData*        CModelessBars::GetData ()
  189. {
  190.  
  191.     return mData;
  192. }
  193.  
  194. //----------
  195. void    CModelessBars::DataChanged (
  196.     long        inDataID)
  197. {
  198.     StopListening ();
  199.  
  200.     if (inDataID == idBars3) {
  201.         mBarsPanel->SetValue (mData->GetBars3 ());
  202.     }
  203.     if (inDataID == idStandard8) {
  204.         mStandardScroll->SetValue (mData->GetStandard8 ());
  205.     }
  206.     if (inDataID == idGraphic6) {
  207.         mGraphicScroll->SetValue (mData->GetGraphic6 ());
  208.     }
  209.     if (inDataID == idSlider3) {
  210.         mSliderScroll->SetValue (mData->GetSlider3 ());
  211.     }
  212.     if (inDataID == idTickMarks3) {
  213.         mTickMarksScroll->SetValue (mData->GetTickMarks3 ());
  214.     }
  215.     if (inDataID == idNonDirectional3) {
  216.         mNonDirectionalScroll->SetValue (mData->GetNonDirectional3 ());
  217.     }
  218.     if (inDataID == idLittleArrows3) {
  219.         mLittleArrowsScroll->SetValue (mData->GetLittleArrows3 ());
  220.     }
  221.     if (inDataID == idSpinner3) {
  222.         mSpinnerScroll->SetValue (mData->GetSpinner3 ());
  223.     }
  224.     if (inDataID == idVolumeControl3) {
  225.         mVolumeControlScroll->SetValue (mData->GetVolumeControl3 ());
  226.     }
  227.     if (inDataID == idJimSSlider3) {
  228.         mJimSSliderScroll->SetValue (mData->GetJimSSlider3 ());
  229.     }
  230.     if (inDataID == idStandard9) {
  231.         mStandard2Bar->SetValue (mData->GetStandard9 ());
  232.     }
  233.     if (inDataID == idIndeterminate3) {
  234.         mIndeterminateBar->SetValue (mData->GetIndeterminate3 ());
  235.     }
  236.     if (inDataID == idChasingArrows3) {
  237.         mChasingArrowsBar->SetValue (mData->GetChasingArrows3 ());
  238.     }
  239.     if (inDataID == idRectangle3) {
  240.         mRectangleBar->SetValue (mData->GetRectangle3 ());
  241.     }
  242.     if (inDataID == idRoundRect3) {
  243.         mRoundRectBar->SetValue (mData->GetRoundRect3 ());
  244.     }
  245.     if (inDataID == idBarberPole3) {
  246.         mBarberPoleBar->SetValue (mData->GetBarberPole3 ());
  247.     }
  248.     if (inDataID == idRoundBarber3) {
  249.         mRoundBarberBar->SetValue (mData->GetRoundBarber3 ());
  250.     }
  251.  
  252.     StartListening ();
  253. }
  254.  
  255. //----------
  256. void    CModelessBars::ListenToMessage (
  257.     MessageT    inMessage,
  258.     void        *ioParam)
  259. {
  260.     switch (inMessage) {
  261.     case msg_OK:
  262.             GetSuperCommander()->ProcessCommand(-mCommand, this);
  263.         break;
  264.  
  265.     case msg_Cancel:
  266.             DoClose();
  267.         break;
  268.  
  269.     case msgDataChanged:
  270.             DataChanged ((long)ioParam);
  271.         break;
  272.  
  273.     case msgBars:
  274.             mData->SetBars3 (mBarsPanel->GetValue ());
  275.         break;
  276.  
  277.     case msgStandard:
  278.             mData->SetStandard8 (mStandardScroll->GetValue ());
  279.         break;
  280.  
  281.     case msgGraphic:
  282.             mData->SetGraphic6 (mGraphicScroll->GetValue ());
  283.         break;
  284.  
  285.     case msgSlider:
  286.             mData->SetSlider3 (mSliderScroll->GetValue ());
  287.         break;
  288.  
  289.     case msgTickMarks:
  290.             mData->SetTickMarks3 (mTickMarksScroll->GetValue ());
  291.         break;
  292.  
  293.     case msgNonDirectional:
  294.             mData->SetNonDirectional3 (mNonDirectionalScroll->GetValue ());
  295.         break;
  296.  
  297.     case msgLittleArrows:
  298.             mData->SetLittleArrows3 (mLittleArrowsScroll->GetValue ());
  299.         break;
  300.  
  301.     case msgSpinner:
  302.             mData->SetSpinner3 (mSpinnerScroll->GetValue ());
  303.         break;
  304.  
  305.     case msgVolumeControl:
  306.             mData->SetVolumeControl3 (mVolumeControlScroll->GetValue ());
  307.         break;
  308.  
  309.     case msgJimSSlider:
  310.             mData->SetJimSSlider3 (mJimSSliderScroll->GetValue ());
  311.         break;
  312.  
  313.  
  314.     default:
  315.           ; // do something
  316.         break;
  317.     }
  318. }
  319.  
  320. //----------
  321. Boolean        CModelessBars::ObeyCommand (
  322.     CommandT    inCommand,
  323.     void*        ioParam)
  324. {
  325.     Boolean        cmdHandled = true;
  326.  
  327.     if (inCommand < 0) {
  328.         // modal dialog has finished
  329.  
  330.         switch (-inCommand) {
  331.         }
  332.  
  333.     } else {
  334.         switch (inCommand) {
  335.  
  336.         default:
  337.                 cmdHandled = LGADialog::ObeyCommand(inCommand, ioParam);
  338.             break;
  339.         }
  340.     }
  341.  
  342.     return cmdHandled;
  343. }
  344.  
  345. //----------
  346. void    CModelessBars::FindCommandStatus (
  347.     CommandT    inCommand,
  348.     Boolean        &outEnabled,
  349.     Boolean        &outUsesMark,
  350.     Char16        &outMark,
  351.     Str255        outName)
  352. {
  353.     outUsesMark = false;
  354.  
  355.     switch (inCommand) {
  356.  
  357.     // +++ Add cases here for the commands you handle
  358.  
  359.     default:
  360.             LGADialog::FindCommandStatus(inCommand, outEnabled,
  361.                                             outUsesMark, outMark, outName);
  362.         break;
  363.     }
  364. }
  365.  
  366. // following functions will be obsoleted
  367. // retained only for backwards compatibility
  368. //----------
  369. Boolean
  370. CModelessBars::GetBarsChoice ()
  371. {
  372.     return mBarsPanel->GetValue ();
  373. }
  374.  
  375. void
  376. CModelessBars::SetBarsChoice (
  377.     Int32        inChoice)
  378. {
  379.     mBarsPanel->SetValue (inChoice);
  380. }
  381.  
  382. //----------
  383. Boolean
  384. CModelessBars::GetStandardValue()
  385. {
  386.     return mStandardScroll->GetValue();
  387. }
  388.  
  389. void
  390. CModelessBars::SetStandardValue (
  391.     Int32        inValue)
  392. {
  393.     mStandardScroll->SetValue (inValue);
  394. }
  395.  
  396. //----------
  397. Boolean
  398. CModelessBars::GetGraphicValue()
  399. {
  400.     return mGraphicScroll->GetValue();
  401. }
  402.  
  403. void
  404. CModelessBars::SetGraphicValue (
  405.     Int32        inValue)
  406. {
  407.     mGraphicScroll->SetValue (inValue);
  408. }
  409.  
  410. //----------
  411. Boolean
  412. CModelessBars::GetSliderValue()
  413. {
  414.     return mSliderScroll->GetValue();
  415. }
  416.  
  417. void
  418. CModelessBars::SetSliderValue (
  419.     Int32        inValue)
  420. {
  421.     mSliderScroll->SetValue (inValue);
  422. }
  423.  
  424. //----------
  425. Boolean
  426. CModelessBars::GetTickMarksValue()
  427. {
  428.     return mTickMarksScroll->GetValue();
  429. }
  430.  
  431. void
  432. CModelessBars::SetTickMarksValue (
  433.     Int32        inValue)
  434. {
  435.     mTickMarksScroll->SetValue (inValue);
  436. }
  437.  
  438. //----------
  439. Boolean
  440. CModelessBars::GetNonDirectionalValue()
  441. {
  442.     return mNonDirectionalScroll->GetValue();
  443. }
  444.  
  445. void
  446. CModelessBars::SetNonDirectionalValue (
  447.     Int32        inValue)
  448. {
  449.     mNonDirectionalScroll->SetValue (inValue);
  450. }
  451.  
  452. //----------
  453. Boolean
  454. CModelessBars::GetLittleArrowsValue()
  455. {
  456.     return mLittleArrowsScroll->GetValue();
  457. }
  458.  
  459. void
  460. CModelessBars::SetLittleArrowsValue (
  461.     Int32        inValue)
  462. {
  463.     mLittleArrowsScroll->SetValue (inValue);
  464. }
  465.  
  466. //----------
  467. Boolean
  468. CModelessBars::GetSpinnerValue()
  469. {
  470.     return mSpinnerScroll->GetValue();
  471. }
  472.  
  473. void
  474. CModelessBars::SetSpinnerValue (
  475.     Int32        inValue)
  476. {
  477.     mSpinnerScroll->SetValue (inValue);
  478. }
  479.  
  480. //----------
  481. Boolean
  482. CModelessBars::GetVolumeControlValue()
  483. {
  484.     return mVolumeControlScroll->GetValue();
  485. }
  486.  
  487. void
  488. CModelessBars::SetVolumeControlValue (
  489.     Int32        inValue)
  490. {
  491.     mVolumeControlScroll->SetValue (inValue);
  492. }
  493.  
  494. //----------
  495. Boolean
  496. CModelessBars::GetJimSSliderValue()
  497. {
  498.     return mJimSSliderScroll->GetValue();
  499. }
  500.  
  501. void
  502. CModelessBars::SetJimSSliderValue (
  503.     Int32        inValue)
  504. {
  505.     mJimSSliderScroll->SetValue (inValue);
  506. }
  507.  
  508. void
  509. CModelessBars::SetStandard2Choice (
  510.     Int32        inChoice)
  511. {
  512.     mStandard2Bar->SetValue (inChoice);
  513. }
  514.  
  515. void
  516. CModelessBars::SetIndeterminateChoice (
  517.     Int32        inChoice)
  518. {
  519.     mIndeterminateBar->SetValue (inChoice);
  520. }
  521.  
  522. void
  523. CModelessBars::SetChasingArrowsChoice (
  524.     Int32        inChoice)
  525. {
  526.     mChasingArrowsBar->SetValue (inChoice);
  527. }
  528.  
  529. void
  530. CModelessBars::SetRectangleChoice (
  531.     Int32        inChoice)
  532. {
  533.     mRectangleBar->SetValue (inChoice);
  534. }
  535.  
  536. void
  537. CModelessBars::SetRoundRectChoice (
  538.     Int32        inChoice)
  539. {
  540.     mRoundRectBar->SetValue (inChoice);
  541. }
  542.  
  543. void
  544. CModelessBars::SetBarberPoleChoice (
  545.     Int32        inChoice)
  546. {
  547.     mBarberPoleBar->SetValue (inChoice);
  548. }
  549.  
  550. void
  551. CModelessBars::SetRoundBarberChoice (
  552.     Int32        inChoice)
  553. {
  554.     mRoundBarberBar->SetValue (inChoice);
  555. }
  556.  
  557.